﻿#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QFile>

#include "H264Parser.h"
#include "ChunkFileReader.h"
#include "PullStream.h"

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class RtmpPushStream;

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:

    /**
     * @brief slotChunkReady 获取固定块大小的h264数据
     * @param chunk
     */
    void slotChunkReady(const QByteArray &chunk);

    /**
     * @brief slotFinished 文件数据发送结束
     */
    void slotFinished();

    /**
     * @brief showVideo 显示视频
     * @param image 图像
     */
    void showVideo(const QImage& image);

private:
    Ui::MainWindow *ui;

    /*-----------------推流-----------------------------*/
    /**
     * @brief m_rtmpPush 推流对象
     */
    RtmpPushStream* m_rtmpPush;

    /**
     * @brief h264Parser H264数据拼AVPacket
     */
    H264Parser h264Parser;

    /**
     * @brief fileReader H264文件使用固定块发送对象
     */
    ChunkFileReader fileReader;

    /**
     * @brief m_packetList AVPacket列表
     */
    QList<AVPacket> m_packetList;

    /**
     * @brief m_image_width 图像的宽度和高度
     */
    int m_image_width,m_image_height;


    /*-----------------拉流-----------------------------*/
    /**
     * @brief m_pullStream 拉流对象
     */
    PullStream* m_pullStream;


};
#endif // MAINWINDOW_H
